//
//  ViewController.m
//  BiuWeather
//
//  Created by 楼楚 on 16/3/6.
//  Copyright © 2016年 Chu Lou. All rights reserved.
//


#define IS_IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7)
#define IS_IOS8 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8)
//主界面
#import "weatherView.h"
#import "ForecastControllerViewController.h"

#import "MBProgressHUD.h"

//获取网络数据
#import "GetWeatherData.h"
#import "WeatherData.h"

#import "ViewController.h"
//#import "CCLocationManager.h"

@interface ViewController ()<CLLocationManagerDelegate,UITableViewDelegate,weatherViewDelegate,GetWeatherDataDelegate,UIViewControllerTransitioningDelegate,MBProgressHUDDelegate>{
    CLLocationManager  *_manager;
    CLGeocoder         *_geocoder;
    MBProgressHUD      *_updatingHUD;
    }

@property (nonatomic, strong) GetWeatherData       *getWeatherData;
@property (nonatomic,strong)  UILabel              *textLabel;
@property (nonatomic,strong)  weatherView          *weatherView;
@property (nonatomic,strong)  NSString             *cityName;
@property (nonatomic,strong)  NSString             *cityCNName;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
  
    _manager =[[CLLocationManager alloc]init];
    if (![CLLocationManager locationServicesEnabled]) {
        NSLog(@"定位服务当前可能尚未打开，请设置打开！");
        return;
    }
    
    //如果没有授权则请求用户授权
    if ([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined){
        [_manager requestWhenInUseAuthorization];
    }else if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
        //设置代理
        _manager.delegate=self;
        //设置定位精度
        _manager.desiredAccuracy=kCLLocationAccuracyBest;
        //定位频率,每隔多少米定位一次
        CLLocationDistance distance=10.0;//十米定位一次
        _manager.distanceFilter=distance;
        //启动跟踪定位
        [_manager startUpdatingLocation];
    }
    _updatingHUD = [[MBProgressHUD alloc]initWithView:self.view];
    [self.view addSubview:_updatingHUD];
    [self.view bringSubviewToFront:_updatingHUD];
    _updatingHUD.delegate = self;
    _updatingHUD.labelText = @"加载中...";
    [_updatingHUD show:YES];
    self.weatherView = [[weatherView alloc]initWithFrame:self.view.bounds];
    self.weatherView.layer.masksToBounds = YES;
    self.weatherView.delegate = self;
    [self.weatherView buildView];
    [self.view addSubview:self.weatherView];
    
    
    self.getWeatherData = [GetWeatherData new];
    self.getWeatherData.delegate = self;
    
    
    
     }

- (void)pullUpEvent{
    ForecastControllerViewController *forecastCV = [[ForecastControllerViewController alloc]initWithArray:self.getWeatherData.weatherData.week.oneWeek];
    forecastCV.transitioningDelegate = self;
    [self presentViewController:forecastCV
                       animated:YES
                     completion:^{}];
    
}
- (void)sucess:(BOOL)sucess{
    if (sucess) {

        WeatherData *dic0 = [[WeatherData alloc]initWithDictionary:self.getWeatherData.weather];
        self.weatherView.today = dic0.today;
        self.weatherView.weekForcast = dic0.week;
        self.weatherView.cityName = self.cityCNName;
        [_updatingHUD hide:YES];
               [self.weatherView show];
        

    }
}
- (void)pullDownToRefreshData
{
    [self.weatherView hide];
    [_updatingHUD show:YES];
    if ([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined){
       
           [_manager requestWhenInUseAuthorization];
    }else if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
      
        //设置代理
        _manager.delegate=self;
       
        //设置定位精度
        _manager.desiredAccuracy=kCLLocationAccuracyBest;
       
        
        //定位频率,每隔多少米定位一次
        CLLocationDistance distance=10.0;//十米定位一次
     
        _manager.distanceFilter=distance;
     
        //启动跟踪定位
        [_manager startUpdatingLocation];
    }

}


#pragma mark CLLocationManagerDelegate
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    CLLocation *location=[locations firstObject];//取出第一个位置
    
//    self.coordinate = location.coordinate;
    CLLocationCoordinate2D coordinate=location.coordinate;//位置坐标
    _geocoder = [[CLGeocoder alloc]init];
    [self getAddressByLatitude:coordinate.latitude longitude:coordinate.longitude];
        //如果不需要实时定位，使用完即使关闭定位服务
    [_manager stopUpdatingLocation];
   
}

#pragma mark 根据坐标取得地名
-(void)getAddressByLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude{
    //反地理编码
   
        CLLocation *location=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
    

        [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
        CLPlacemark *placemark=[placemarks lastObject];
        
        NSString *str = [placemark.addressDictionary objectForKey:@"City"];
        self.cityCNName = str ;


        NSString *city1 = [str substringToIndex:([str  length]-1)];

            
    
        NSString *city2= [NSString stringWithFormat:@"city=%@",city1];
        self.cityName = [city2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
        self.getWeatherData.cityStr =self.cityName;
        [self.getWeatherData getData];
        
                          }];
}



//状态栏
-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleDefault;
}
//隐藏状态栏
- (BOOL)prefersStatusBarHidden
{
    return YES;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
